package 算法.leetcode.sort;

import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;

/**
 * @author lchenglong
 * @date 2022/2/15
 */
public class Test {

    /**
     * 现在有一堆数字共N个数字（N<=10^6），以及一个大小为k的窗口。
     * 现在这个从左边开始向右滑动，每次滑动一个单位，求出每次滑动后窗口中的最大值和最小值。
     * 例如：The array is [1 3 -1 -3 5 3 6 7], and k = 3.
     * -1 -3 -3 -3 3 3
     * 3 3 5 5 6 7
     */
    public static void main(String[] args) {
        int[] array = new int[]{1,3,-1,-3,5,3,6,7};
        int[] res = hd(array, 3);
        System.out.println(Arrays.toString(res));
    }

    /**
     * 暴力破解 会超时
     * @param nums
     * @param k
     * @return
     */
    public static int[] hd(int[] nums, int k) {
        int  len = nums.length;
        int[] ans = new int[len - k + 1];
        int max = 0;
        int index = 0;
        Deque<Integer> deque = new LinkedList<Integer>();
        for (int i = 0; i < k; ++i) {
            while (!deque.isEmpty() && nums[i] >= nums[deque.peekLast()]) {
                deque.pollLast();
            }
            deque.offerLast(i);
        }
        ans[0] = nums[deque.peekFirst()];
//        while (index<len-k+1){
//            if (queue.(index)>max){
//
//            }
//            index++;
//        }

        return new int[2];
    }

}
